F
Assignments for this week we have to attach a sensor to a microcontroller board that you have designed and read data from it. In this week I decided to make the microcontroller board for my final project
Switch is using for making and breaking the connection in an electric circuit.
What is switch bounce?
When physically press a normal pushbutton this time two pieces of metal come into contact with each other.
In using of any mechanical switch click together they rebound a bit before settling, causing the bounce,
this non-ideal behavior of the contacts that creates multiple electrical transitions for a single user input.P
If the switch is used to do is turn on bulbs or start a fan motor, then contact bounce is not a problem. But when a switch is using as input to a digital counter, or a microprocessor-based equipment, then you must consider bounce of switch . The reason is that the time it takes for stop bouncing is measured in milliseconds. Digital circuits can respond in microseconds. So this is cause to change in expected result
Characteristics of switch bounce :-
- all switches do bounce
-the duration of bouncing and the period of each bounce varies
-switches of exactly the same type bounce differently
-bounce differs depending on user force and speed
-typical bounce frequency is .1-5ms
There are many different approaches to cleaning up switch bounce.
Below is a debouncing circuit. The basic idea is using the circuit is a capacitor to filter out any quick changes in the switch signal.
The basic idea of Software Debounce is sample the switch signal at a regular interval and filter out any glitches .A typical debounce routine is given below in a sort of generic assembly language.
      DR:       PUSH PSW ; SAVE PROGRAM STATUS WORD
LOOP:       CALL DELAY ; WAIT A FIXED TIME PERIOD
                    IN SWITCH ; READ SWITCH
                    CMP ACTIVE ; IS IT STILL ACTIVATED?
                    JT LOOP ; IF TRUE, JUMP BACK
                    CALL DELAY ;
                    POP PSW ; RESTORE PROGRAM STATUS
                    EI ; RE-ENABLE INTERRUPTS
                    RETI ; RETURN BACK TO MAIN PROGRAM
Example code for Debounce using Arduino - https://www.arduino.cc/en/Tutorial/Debounce
In the broadest definition, a sensor is an object whose purpose is to detect events or changes in its environment, and then provide a corresponding output
Phototransistor
In my final project I need a Non-contact position sensor for this first I desired use phototransistor . I start to study about working of the phototransistor. I understand one thing photo transistor is similar to an ordinary bipolar junction transistor except that no base terminal is provided. Instead of base current, the input to the transistor is provided in the form of light.
In the below circuit output voltage changes with light is because the phototransistor lets more current pass when more light shines on it or less current pass with less light
In our fab lab, available OP580 is an NPN silicon phototransistor mounted in a miniature SMD package
Applications of phototransistor :
Non-contact position sensing
Datum detection
Machine automation
Optical encoder
After studying about photo tram]nsistor I understand one thing it is very difficult to use phototransistor for
detecting the direction of motion in my final project .
The main reason is the output value of the phototransistor varying with respect to surrounding light
IR receiver
I start to study about working of the IR transceivers . I fount that IR transceivers can overcome the limitations of the phototransistor.
An infrared receiver or IR receiver outputs a code to uniquely identify the infrared signal that it receives.
The IR transmitter LED transmits continuous IR rays , when reflective surface comes near to IR transmitter LED IR rays reflected back . Due to this reflection, the amount of IR rays received by an IR receiver LED is increased . An IR receiver LED output terminal value varies depending upon its amount of receiving of IR rays
This board is a very important part of my final project . Before starting the design I study about several types of IR modules and IR circuits. Finally I decided to make a modified version of circuit shown in below. Main modification i made on this circuit is replacing LM358 with ATtiny 44 microcontroller and adding two pairs of IR transceivers
Then I star to design the board. In this board I using two IR transceivers used for the movement detection and Attiny 44 micro-controller for processing data from the IR receiver . And two blue color LED one is using for power indication in whole board and another one is for correct movement indication. Draw schematic circuit in eagle show in below
Download Schematic file (.sch)
The designing of the board is very difficult because I wand to include this board into fixed size rectangular case (36mmx17mm) of my final project and position of LEDs must keep in a fixed position
First, I locked LEDs and IR receivers in a fix the position on the board. Then start to arrange the position of other components . I compelled to make a double side design for getting the board in a size what I need
For reducing maximum size In this board both FTDI cable and ISP programmer connecting to FTDI header . for this I set MISO and MOSI to Tx and Rx pin of FTDI header
Download Board file (.brd)
Milling&Stuffing the board
Milling double sided PCB :-
This was the first time I'm doing a double sided board,first, I export all traces , pads and via holes from eagle software into .png format .Shown below
Then I set my PCB to mill with a support of the adjacent side of two waste PCBs(shown below).This setup helps me to maintain PCB in the same position when flip it for mill opposite side
Then started milling my board. I use 1/64 bit for mill the traces . After completing milling of one side traces then I change the bit to 1/32 bit for drill the hole. Then make a change "bottom height" from -1.7 to -0.85 ( half of 1.7) on the "fab module". This value change cause to make the depth of the hole drilled is half copper board . Other half depth drills from another side of the board
After milling the board I start to stuffing the board . Before soldering the components on the board I interconnect the via in the board, I use narrow copper wires to interconnect vias
I spent a lot of time for interconnecting vias using copper wires this is the riskiest part on this board making . For avoiding short circuit I manually remove unused copper using knife this is helping me to do soldering more easier ( set the offsets to -1 in order to remove all the unused copper during the milling )
After finishing connection of vias I start soldering the components into the board quite fast
show below the final result of both sides of the board :
------
For make connection easier with board I use jumper wires to connect FTDI header of broad , And another end of jumper wires is connected to isp programmer or FTDI cable ( this arrangement helps me to reduce the damage to board during testing )
Programming the board
Obtaining readings from the sensors :-
Here I am using two IR transceivers used for the movement detection .For Obtaining maximum and minimum readings from the sensors, connect the board to my computer using FTDI cable. Then continuously read IR receiver value using "analogRead" command in Arduino and use serial monitor to show the range of values. I use the following program to read the values
Using above program I got the maximum value from the sensor "900" ( when the finger very close to the sensor ) and minimum value "0" ( finger away from the sensor )
Then make a program for the finger movement detection . Here I using two IR sensors modules (sensor 1 and sensor 2) , if the finger is first above the sensor 1 input value to microcontroller I/O port of sensor one is 900 and sensor two is 0 , this time sent a string value " Move Left " via FTDI cable vice versa sensor two is 900 and sensor one is 0, this time another sent a sting value " Move Right "
Then I connect fab ISPwirh the board for burn the program
Final result show in video finger is above the sensor 1 set a sting Move Left and finger is above the sensor 2 set a sting Move Right